const checkPhone = (rule, value, callback) => {
	const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
	if (!value) {
		return callback('电话不能为空')
	}
	setTimeout(() => {
		if (!Number.isInteger(+value)) {
			callback(new Error('请输入数字值'))
		} else {
			if (phoneReg.test(value)) {
				callback()
			} else {
				callback(new Error('电话号码格式不正确'))
			}
		}
	}, 100)
}

const checkEmail = (rule, value, callback) => {
	const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
	if (!value) {
		callback()
	}
	setTimeout(() => {
		if (mailReg.test(value)) {
			callback()
		} else {
			callback(new Error('请输入正确的邮箱格式'))
		}
	}, 100)
}

const checkUserName = (rule, value, callback) => {
	if (!value) {
		return callback('用户名不能为空！')
	} else if (value.length > 20) {
		return callback(new Error('大于20个字符!'))
	} else {
		callback()
	}
}

const checkPassWord = (rule, value, callback) => {
	if (!value) {
		return callback(new Error('密码不能为空'))
	}
	if (value.length < 6) {
		return callback(new Error('密码不能小于6位'))
	} else {
		callback()
	}
}

const checkIdNumber = (rule, value, callback) => {
	const idNumberReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
	if (!value) {
		return callback(new Error('身份证号码不能为空!!'))
	}
	setTimeout(() => {
		if (!idNumberReg.test(value)) {
			return callback(new Error('您的身份证号码格式错误!'))
		} else {
			callback()
		}
	}, 100)
}

/* 合法真实姓名 */
const checkRealName = (rule, value, callback) => {
	const realnameReg = /^([a-zA-Z0-9\u4e00-\u9fa5\·]{1,10})$/
	if (!value) {
		return callback(new Error('真实姓名不能为空!!'))
	}
	setTimeout(() => {
		if (!realnameReg.test(value)) {
			return callback(new Error('您的真实姓名格式错误,请输入英文或汉字!'))
		} else {
			callback()
		}
	}, 100)
}

export {
	checkPhone,
	checkEmail,
	checkPassWord,
	checkIdNumber,
	checkUserName,
	checkRealName,
}
